package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@RestController//相当于@ResponseBody+@Controller
@RequestMapping(value = "stu")
    public class StudentController {

        //http://localhost:8080/stu/list
        //没有限定请求方式的时候，可以是多种请求方式
        @RequestMapping(value = {"/list01","/list02","/list03"})//用来处理请求地址映射的注解，可用于类或者方法上面
        //@ResponseBody该类中所有的API接口返回的数据，都会以Json字符串形式返回给客户端，除了String，返回的任然是String形式
        public String ListInfo(){
            return"SpringBoot + Mybaties!";
        }
//get请求
    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String getTest(){
        System.out.printf("getTest()...");
        return "get Test()......";
    }
    //POST请求
    @RequestMapping(value = "/test01",method = RequestMethod.POST)
    public String postTest(){
        System.out.printf("postTest()...");
        return "postTest()......";
    }
    //映射路径可以是同一个,但是请求方式是不同的
//get通常用于分页和简单查询
   // @GetMapping("/get")
    @GetMapping("/abc")
      public String TestGet(){
            System.out.printf("TestGet()...");
            return "TestGet()......";
    }
    //post通常用于添加
    //@PostMapping("/post")
    @PostMapping("/abc")
    public String TestPost(){
        System.out.printf("TestPost()...");
        return "TestPost()......";
    }
    //delete通常用于删除操作
    //@DeleteMapping("/del")
    @DeleteMapping("/abc")
    public String TestDel(){
        System.out.printf("TestDelete()...");
        return "TestDelete()......";
    }
    //put通常用于修改操作
    //@PutMapping("/put")
    @PutMapping("/abc")
    public String TestPut(){
        System.out.printf("TestPut()...");
        return "TestPut()......";
    }

    //基于Ant风格的URL路径映射
//?代表任意单个字符，至少要写一个字符
    @GetMapping("/ant?")
    public String Ant01(){
            System.out.printf("Ant01()");
            return "Ant01()";
    }
    //*代表任意个字符，可以是0
    @GetMapping("/ant*")
    public String Ant02(){
        System.out.printf("Ant02()");
        return "Ant02()";
    }
    //*目录中的用法，可以是任意个字符，但不能没有
    @GetMapping("/*/ant")
    public String Ant03(){
        System.out.printf("Ant03()");
        return "Ant03()";
    }
    //**在目录中的用法，任意层目录，任意个字符,可以为空
    @GetMapping("/**/testant")
    public String Ant04(){
        System.out.printf("Ant04()");
        return "Ant04()";
    }
}